﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AbstractFramework.LogicControl
{
    public interface IController
    {
        IElevator[] _Elevator
        {
            get;
            set;
        }
        //ITimer[] _Time
        //{
        //    get;
        //    set;
        //}
        //long[] _IdleTime
        //{
        //    get;
        //    set;
        //}
            
        void addEvent(IEvent inputevent);//此方法供外部调用，对三种不同的Event进行不同的响应
        void addFireEvent();//对fireEvent响应 
        void addOutsideEvent(IEvent inputevent);//对outsideEvent响应
        void addInsideEvent(IEvent inputevent);//对InsideEvent响应
        void eventIntoList(int ID, IEvent inputevent);//将inputevent加入到分配的电梯的任务列表中
        void updateTask(int ID, int desFloor);//controller刷新电梯的当前任务
        void nextTask(int ID);//供elevator调用，取下一个任务
        int[] sortTaskList(int ID);//计算每个任务到电梯ID的相对距离，存于reDes，将taskList按reDes排序，返回taskList 相对应的相对距离数组reDes
        void updateRavTime(int[] reDes, int ID);//计算并刷新电梯ID各层请求的预计到达时间
    }
}
